package scenic.path;

import java.awt.Rectangle;
import java.awt.geom.AffineTransform;

public interface Path {
	/**
	 * Walks the given walker through the path. The error matrix is
	 * used only to ensure correct precision, but is not to used
	 * to transform the path itself.
	 * 
	 * @param walker the walker
	 * @param errorMatrix the error matrix
	 * @param error maximum deviation from correct path
	 */
	void walk(PathWalker walker, AffineTransform errorMatrix, double error);
	
	/**
	 * Calculates the bounds of this path using the given transform.
	 * 
	 * @param transform the transform
	 * @return the bounds
	 */
	Rectangle getBounds(AffineTransform transform);

	boolean isConvex();	
}
